MCP 문서 관리

메뉴

Apple Calendar

Apple Calendar

Apple Calendar MCP 서버는 MacOS의 내장 Calendar 애플리케이션과 상호작용할 수 있는 Model Context Protocol 서버입니다. 이 서버를 통해 AI 어시스턴트는 자연어를 사용하여 일정을 확인하고, 이벤트를 추가하거나 편집하고, 다양한 캘린더 기능을 활용할 수 있습니다.

특징

  • 캘린더 이벤트 조회, 추가, 편집 및 삭제
  • 여러 캘린더 계정 및 캘린더 관리
  • 자연어를 통한 일정 생성 및 조회
  • 반복 이벤트 생성 및 관리
  • 이벤트 상세 정보(위치, 참석자, 알림 등) 설정
  • 다양한 기간(일별, 주별, 월별) 일정 조회
  • 날짜 및 시간 범위에 따른 일정 필터링
  • MacOS 알림 센터를 통한 일정 알림
  • iCloud 동기화 지원
  • 캘린더 간 일정 이동 및 복사

API

리소스

calendar://{calendar_id}

  • 특정 캘린더에 대한 정보와 이벤트 목록을 제공합니다.

event://{event_id}

  • 특정 이벤트의 세부 정보를 제공합니다.

도구

list_calendars

사용 가능한 모든 캘린더를 나열합니다. - 입력: 없음 - 출력: 캘린더 ID, 제목, 색상 및 기타 정보를 포함한 캘린더 목록

get_calendar

특정 캘린더의 정보를 가져옵니다. - 입력: - calendar_id: 캘린더 ID - 출력: 캘린더 상세 정보

list_events

캘린더의 이벤트를 나열합니다. - 입력: - calendar_id: (선택적) 캘린더 ID (생략 시 모든 캘린더) - start_date: (선택적) 시작 날짜 (기본값: 오늘) - end_date: (선택적) 종료 날짜 (기본값: 시작 날짜로부터 7일) - include_completed: (선택적) 완료된 이벤트 포함 여부 - 출력: 이벤트 목록

get_event

특정 이벤트의 세부 정보를 가져옵니다. - 입력: - event_id: 이벤트 ID - 출력: 이벤트 상세 정보

create_event

새 이벤트를 생성합니다. - 입력: - calendar_id: 캘린더 ID - title: 이벤트 제목 - start_date: 시작 일시 - end_date: (선택적) 종료 일시 (기본값: 시작 일시로부터 1시간) - location: (선택적) 위치 - notes: (선택적) 메모 - url: (선택적) 관련 URL - all_day: (선택적) 종일 이벤트 여부 - recurrence: (선택적) 반복 규칙 - alarms: (선택적) 알림 설정 - attendees: (선택적) 참석자 목록

update_event

기존 이벤트를 업데이트합니다. - 입력: - event_id: 이벤트 ID - title: (선택적) 새 제목 - start_date: (선택적) 새 시작 일시 - end_date: (선택적) 새 종료 일시 - location: (선택적) 새 위치 - notes: (선택적) 새 메모 - url: (선택적) 새 URL - all_day: (선택적) 종일 이벤트 여부 - recurrence: (선택적) 새 반복 규칙 - alarms: (선택적) 새 알림 설정 - attendees: (선택적) 새 참석자 목록

delete_event

이벤트를 삭제합니다. - 입력: - event_id: 삭제할 이벤트 ID - delete_all_future: (선택적) 반복 이벤트의 모든 향후 인스턴스 삭제 여부

search_events

이벤트를 검색합니다. - 입력: - query: 검색 쿼리 - calendar_ids: (선택적) 검색할 캘린더 ID 목록 - start_date: (선택적) 검색 시작 날짜 - end_date: (선택적) 검색 종료 날짜 - max_results: (선택적) 최대 결과 수 - 출력: 검색 결과와 일치하는 이벤트 목록

find_free_time

특정 기간 내에서 비어 있는 시간을 찾습니다. - 입력: - calendar_ids: (선택적) 확인할 캘린더 ID 목록 - start_date: 검색 시작 날짜 - end_date: 검색 종료 날짜 - duration_minutes: 필요한 시간(분) - working_hours_only: (선택적) 근무 시간 내에서만 검색할지 여부 - 출력: 이용 가능한 시간대 목록

create_calendar

새 캘린더를 생성합니다. - 입력: - title: 캘린더 제목 - color: (선택적) 캘린더 색상 - description: (선택적) 캘린더 설명 - 출력: 생성된 캘린더 정보

delete_calendar

캘린더를 삭제합니다. - 입력: - calendar_id: 삭제할 캘린더 ID

사용 방법

설치 및 구성

  1. 사전 요구 사항:
  2. MacOS 운영 체제 (최소 Catalina 10.15 이상)
  3. Python 3.8 이상
  4. MacOS Calendar 앱 접근 권한

  5. MCP 서버 설치:

    pip install apple-calendar-mcp

  6. Claude Desktop 구성:

    {
      "mcpServers": {
        "apple-calendar": {
          "command": "python",
          "args": ["-m", "apple_calendar_mcp"],
          "env": {
            "CALENDAR_ACCESS_LEVEL": "read-write"
          }
        }
      }
    }

  7. 초기 설정: 첫 실행 시 MacOS에서 Calendar 앱에 대한 접근 권한을 요청합니다. 시스템 환경설정 > 보안 및 개인 정보 보호 > 개인 정보 보호 > 캘린더에서 이 애플리케이션을 허용해야 합니다.

  8. 구성 옵션:

  9. CALENDAR_ACCESS_LEVEL: 캘린더 접근 수준 (read-only, read-write)
  10. DEFAULT_CALENDAR_ID: 기본 캘린더 ID
  11. WORKING_HOURS_START: 근무 시간 시작 (HH:MM 형식, 기본값: 09:00)
  12. WORKING_HOURS_END: 근무 시간 종료 (HH:MM 형식, 기본값: 17:00)
  13. WORKING_DAYS: 근무 일 (월요일부터 일요일까지, 0-6, 기본값: 0,1,2,3,4)

기본 사용 예시

  1. 사용 가능한 캘린더 확인:

    list_calendars()

  2. 오늘의 일정 확인:

    list_events({
      start_date: "2025-05-14",
      end_date: "2025-05-14"
    })

  3. 새 이벤트 생성:

    create_event({
      calendar_id: "personal",
      title: "팀 회의",
      start_date: "2025-05-15T14:00:00",
      end_date: "2025-05-15T15:00:00",
      location: "회의실 A",
      notes: "분기별 마케팅 계획 논의",
      alarms: [
        { trigger: -15, unit: "minutes" }
      ]
    })

  4. 반복 이벤트 생성:

    create_event({
      calendar_id: "work",
      title: "주간 팀 스탠드업",
      start_date: "2025-05-20T10:00:00",
      end_date: "2025-05-20T10:30:00",
      recurrence: {
        frequency: "weekly",
        interval: 1,
        days_of_week: [1], // 월요일
        end: { type: "count", count: 10 }
      }
    })

  5. 이벤트 검색:

    search_events({
      query: "회의",
      start_date: "2025-05-01",
      end_date: "2025-05-31"
    })

  6. 일정이 없는 시간 찾기:

    find_free_time({
      start_date: "2025-05-15",
      end_date: "2025-05-16",
      duration_minutes: 60,
      working_hours_only: true
    })

  7. 자연어 명령 처리:

    // 서버는 자연어 명령을 적절한 API 호출로 변환하는 기능 지원
    process_natural_language_command({
      command: "내일 오후 3시에 1시간 동안 치과 예약 추가해줘"
    })

보안 고려사항

  • MacOS Calendar 앱 접근 권한은 민감한 권한이므로 신중하게 관리해야 합니다.
  • 기본적으로 읽기 전용 모드로 설정하는 것이 안전합니다.
  • 민감한 일정 정보가 포함된 경우 적절한 보안 조치를 취하세요.
  • 사용자의 명시적 동의 없이 캘린더 데이터를 외부와 공유하지 마세요.

연결된 구성 요소

  • Google Calendar - 일정 확인, 시간 찾기, 이벤트 추가/삭제를 위한 Google Calendar 통합
  • Home Assistant - 조명, 스위치, 센서 및 기타 모든 Home Assistant 엔티티를 보고 제어
  • Siri Shortcuts - macOS에서 Siri 단축어와 상호작용하기 위한 MCP